﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
#if !DOT_NET
using Windows.Foundation;

#endif

namespace StyleMVVM.Configuration
{
	public interface IConfigurationService
	{
#if NETFX_CORE
		IAsyncOperation<object> GetValue(string name, Type returnType);

		IAsyncOperation<object> GetValue(string name, Type returnType, object defaultValue);

		IAsyncOperation<bool> SetValue(string name, object newValue);

		IAsyncOperation<object> GetUserValue(string userName, string valueName, Type returnType);

		IAsyncOperation<object> GetUserValue(string userName, string valueName, Type returnType, object defaultValue);

		IAsyncOperation<bool> SetUserValue(string userName, string valueName, object newValue);
#else
		Task<object> GetValue(string name, Type returnType);

		Task<object> GetValue(string name, Type returnType, object defaultValue);

		Task<bool> SetValue(string name, object newValue);

		Task<object> GetUserValue(string userName, string valueName, Type returnType);

		Task<object> GetUserValue(string userName, string valueName, Type returnType, object defaultValue);

		Task<bool> SetUserValue(string userName, string valueName, object newValue);
#endif
	}
}